export default {

    /**
     * @func 开始录音接口
     * @returns {Promise} 返回一个Promise
     */
    startRecord: function () {
        return new Promise(async (resolve, reject) => {
            wx.startRecord({
                complete: function (res) {
                    resolve(res);
                    console.log("开始录音接口----", res);
                }
            });
        });
    },



    /**
     * @func 停止录音接口
     * @returns {Promise} 返回一个Promise
     */
    stopRecord: function () {
        return new Promise(async (resolve, reject) => {
            wx.stopRecord({
                complete: function (res) {
                    resolve(res);
                    console.log("停止录音接口----", res);
                }
            });
        });
    },



    /**
     * @func 监听录音自动停止接口
     * @returns {Promise} 返回一个Promise
     */
    onVoiceRecordEnd: function () {
        return new Promise(async (resolve, reject) => {
            wx.onVoiceRecordEnd({
                // 录音时间超过一分钟没有停止的时候会执行 complete 回调
                complete: function (res) {
                    resolve(res);
                    console.log("停止录音接口----", res);
                }
            });
        });
    },



    /**
     * @func 播放语音接口
     * @returns {Promise} 返回一个Promise
     */
    playVoice: function () {
        return new Promise(async (resolve, reject) => {
            wx.playVoice({
                complete: function (res) {
                    resolve(res);
                    console.log("播放语音接口----", res);
                }
            });
        });
    },



    /**
     * @func 暂停播放接口
     * @returns {Promise} 返回一个Promise
     */
    pauseVoice: function () {
        return new Promise(async (resolve, reject) => {
            wx.pauseVoice({
                complete: function (res) {
                    resolve(res);
                    console.log("暂停播放接口----", res);
                }
            });
        });
    },



    /**
     * @func 停止播放接口
     * @returns {Promise} 返回一个Promise
     */
    stopVoice: function () {
        return new Promise(async (resolve, reject) => {
            wx.stopVoice({
                complete: function (res) {
                    resolve(res);
                    console.log("停止播放接口----", res);
                }
            });
        });
    },



    /**
     * @func 监听语音播放完毕接口
     * @returns {Promise} 返回一个Promise
     */
    onVoicePlayEnd: function () {
        return new Promise(async (resolve, reject) => {
            wx.onVoicePlayEnd({
                complete: function (res) {
                    resolve(res);
                    console.log("监听语音播放完毕接口----", res);
                }
            });
        });
    },



    /**
     * @func 启动实时录音接口
     * @returns {Promise} 返回一个Promise
     * @param {Object} query 传递参数
     * @param maxDuration 最大录音时长，单位：秒，默认值：60
     * @param sampleRate 采样率，单位：赫兹，默认值：16000
     */
    startRecordVoiceBuffer: function (query) {
        return new Promise(async (resolve, reject) => {
            wx.startRecordVoiceBuffer({
                maxDuration: query && query.maxDuration ? query.maxDuration : 60,
                sampleRate: query && query.sampleRate ? query.sampleRate : 16000,
                complete: function (res) {
                    resolve(res);
                    console.log("启动实时录音接口----", res);
                }
            });
        });
    },



    /**
     * @func 接收实时录音数据接口
     * @returns {Promise} 返回一个Promise
     * @returns res 是通过speex编码后再base64的字符串
     */
    onRecordBufferReceived: function () {
        return new Promise(async (resolve, reject) => {
            wx.onRecordBufferReceived({
                complete: function (res) {
                    resolve(res);
                    console.log("接收实时录音数据接口----", res);
                }
            });
        });
    },




    /**
     * @func 停止实时录音接口
     * @returns {Promise} 返回一个Promise
     */
    stopRecordVoiceBuffer: function () {
        return new Promise(async (resolve, reject) => {
            wx.stopRecordVoiceBuffer({
                complete: function (res) {
                    resolve(res);
                    console.log("停止实时录音接口----", res);
                }
            });
        });
    },



    /**
     * @func 上传语音接口
     * @desc 若采用如下接口，文件会上传到服务器，业务系统后台需要再从后台拉取（此过程需调用上传临时素材文件）。如果需要直接上传至业务后台，请使用ext_Net_Upload接口。
     * @param {Object} query 传递参数
     * @param {string} localId  需要上传的音频的本地ID，由stopRecord接口获得
     * @param {number} isShowProgressTips 默认为1，显示进度提示
     * @returns {Promise} 返回一个Promise
     */
    uploadVoice: function (query) {
        return new Promise(async (resolve, reject) => {
            wx.uploadVoice({
                localId: query && query.localId ? query.localId : '',
                isShowProgressTips: query && query.isShowProgressTips ? query.isShowProgressTips : 1,
                complete: function (res) {
                    resolve(res);
                    console.log("上传语音接口----", res);
                }
            });
        });
    },




    /**
     * @func 下载语音接口
     * @desc 与上传接口相似：若采用如下接口，文件会从服务器下载，后台需要再从业务系统后台拉取（此过程需调用获取临时素材文件）。如果需要直接从业务后台下载，请使用ext_Net_Download接口。
     * @param {Object} query 传递参数
     * @param {string} serverId 需要下载的音频的服务器端ID，由uploadVoice接口获得
     * @param {number} isShowProgressTips 默认为1，显示进度提示
     * @returns {Promise} 返回一个Promise
     */
    downloadVoice: function (query) {
        return new Promise(async (resolve, reject) => {
            wx.downloadVoice({
                serverId: query && query.serverId ? query.serverId : '',
                isShowProgressTips: query && query.isShowProgressTips ? query.isShowProgressTips : 1,
                complete: function (res) {
                    resolve(res);
                    console.log("上传语音接口----", res);
                }
            });
        });
    },




    /**
     * @func 语音转文字接口
     * @param {Object} query 传递参数
     * @param {strting} localId  需要识别的音频的本地Id，由录音相关接口获得，音频时长不能超过60秒
     * @param {number} isShowProgressTips 默认为1，显示进度提示
     * @returns {Promise} 返回一个Promise
     */
    translateVoice: function (query) {
        return new Promise(async (resolve, reject) => {
            wx.translateVoice({
                localId: query && query.localId ? query.localId : '',
                isShowProgressTips: query && query.isShowProgressTips ? query.isShowProgressTips : 1,
                complete: function (res) {
                    resolve(res);
                    console.log("上传语音接口----", res);
                }
            });
        });
    }

}